/**
 * 类型性质
 */
import {Enum} from '../../../../../tnxjs/tnxcore';

export default class TypeKind extends Enum {

    static name = 'TypeKind';

    static UNITY = new TypeKind('单体',
        ['modeling', 'standard', 'domain', 'entity', 'super-unity', 'super-value', 'super-plain', 'super-class',
            'association']);
    static RELATION = new TypeKind('关系',
        ['modeling', 'standard', 'domain', 'entity', 'super-relation', 'super-value', 'super-plain', 'super-class']);
    static ENTITY = new TypeKind('普通实体',
        ['modeling', 'standard', 'domain', 'entity', 'super-value', 'super-plain', 'super-class', 'association']);
    static VALUE = new TypeKind('值模型',
        ['modeling', 'standard', 'domain', 'super-value', 'super-plain', 'super-class']);
    static PLAIN = new TypeKind('POJO', ['modeling', 'arrayed', 'standard', 'super-plain', 'super-class']);
    static ENUM = new TypeKind('枚举', ['modeling', 'enum', 'arrayed', 'final', 'querying']);

    static PRIMITIVE = new TypeKind('原生类型', ['base', 'arrayed', 'final', 'querying']);
    static CLASS = new TypeKind('普通类', ['base', 'arrayed', 'querying']);
    static INTERFACE = new TypeKind('接口', ['base', 'final']);

    static CONVERTER = new TypeKind('转换器', ['final']);
    static GENERIC = new TypeKind('泛型', ['final']);

}
